/**
 * 释放已经锁定的物料批次
 */
Ext.define('YX.smat.ReleaseMaterial', {
	  extend : 'Ext.panel.Panel',
	  layout : {
		  type : 'hbox',
		  align : 'stretch'
	  },
	  gridRelease : null,
	  txtSearchMsn : null,
	  sfSearchHoldNo : null,
	  sfSearchMatCode : null,
	  frmSearch : null,
	  txtReleaseNo : null,
	  txtHoldPwd : null,
	  txtMemo : null,
	  btnRelease : null,
	  btnSearch : null,
	  frmRelease : null,
	  initComponent : function() {
		  this.gridRelease = Ext.create('Ext.grid.Panel', {
			    title : T.label.releaseMaterialLot,
			    flex : 1,
			    selModel : Ext.create('Ext.selection.CheckboxModel', {
				      checkOnly : true
			      }),
			    columns : [{
				      text : T.label.msn,
				      dataIndex : 'msn'
			      }, {
				      text : T.label.matCode,
				      dataIndex : 'matCode'
			      }, {
				      text : T.label.matVer,
				      dataIndex : 'matVer',
				      width : 65
			      }, {
				      text : T.label.matDesc,
				      dataIndex : 'matDesc',
				      width : 150
			      }, {
				      text : T.label.warehouseCode,
				      dataIndex : 'whCode',
				      width : 65
			      }, {
				      text : T.label.holdNo,
				      dataIndex : 'holdNo'
			      }, {
				      text : T.label.holdCode,
				      dataIndex : 'holdCode'
			      }, {
				      text : T.label.holdUser,
				      dataIndex : 'holdUser',
				      width : 60
			      }, {
				      xtype : 'datecolumn',
				      text : T.label.holdTime,
				      dataIndex : 'holdTime',
				      width : 120,
				      format : 'Y-m-d H:i:s'
			      }, {
				      text : T.label.memo,
				      dataIndex : 'holdMemo'
			      }],
			    store : {
				    pageSize : 1000,
				    fields : ['msn', 'matCode', 'matVer', 'matDesc', 'whCode', 'holdNo',
				      'holdCode', 'holdUser', {
					      type : 'date',
					      name : 'holdTime',
					      dateFormat : 'YmdHis'
				      }, 'holdMemo'],
				    proxy : {
					    type : 'zbusrpc',
					    module : 'SmatViewHeldMaterialSnService',
					    reader : {
						    root : 'heldMsnList'
					    }
				    }
			    }
		    });

		  this.txtSearchMsn = Ext.create('Ext.form.field.Text', {
			    fieldLabel : T.label.msn,
			    name : 'msn',
			    labelWidth : 60,
			    anchor : '99%'
		    });
		  this.sfSearchHoldNo = Ext.widget('codeviewfieldx', {
			    fieldLabel : T.label.holdNo,
			    labelWidth : 60,
			    name : 'holdNo',
			    anchor : '99%',
			    columns : [{
				      text : T.label.holdNo,
				      dataIndex : 'holdNo'
			      }, {
				      text : T.label.holdCode,
				      dataIndex : 'holdCode'
			      }, {
				      text : T.label.holdUser,
				      dataIndex : 'holdUser',
				      width : 60
			      }, {
				      xtype : 'datecolumn',
				      text : T.label.holdTime,
				      disabledSearch : true,
				      dataIndex : 'holdTime',
				      width : 120,
				      format : 'Y-m-d H:i:s'
			      }],
			    store : {
				    store : 'json',
				    pageSize : 1000,
				    fields : ['holdNo', 'holdCode', 'holdUser', {
					      type : 'date',
					      name : 'holdTime',
					      dateFormat : 'YmdHis'
				      }],
				    proxy : {
					    type : 'zbusrpc',
					    module : 'SqcmViewHoldDefinitionService',
					    reader : {
						    type : 'json',
						    root : 'holdList'
					    }
				    }
			    }
		    });
		  this.sfSearchMatCode = Ext.widget('codeviewfieldx', {
			    fieldLabel : T.label.matCode,
			    labelWidth : 60,
			    anchor : '99%',
			    name : 'matCode',
			    columns : [{
				      text : T.label.matCode,
				      dataIndex : 'matCode',
				      width : 100
			      }, {
				      text : T.label.ver,
				      dataIndex : 'matVer',
				      width : 50
			      }, {
				      text : T.label.matDesc,
				      dataIndex : 'matDesc',
				      width : 150
			      }],
			    store : {
				    store : 'json',
				    fields : ['matCode', 'matVer', 'matDesc'],
				    proxy : {
					    type : 'zbusrpc',
					    module : 'SbasViewBaseMaterialService',
					    reader : {
						    type : 'json',
						    root : 'matList'
					    }
				    }
			    }
		    });
		  this.frmSearch = Ext.create('Ext.form.Panel', {
			    title : T.label.search,
			    items : [this.txtSearchMsn, this.sfSearchHoldNo, this.sfSearchMatCode]
		    });

		  this.txtReleaseNo = Ext.create('Ext.form.Text', {
			    fieldLabel : T.label.releaseNo,
			    name : 'releaseNo',
			    labelWidth : 60,
			    anchor : '99%',
			    readOnly : true
		    });
		  this.txtHoldPwd = Ext.create('Ext.form.Text', {
			    fieldLabel : T.label.password,
			    emptyText : T.label.sameWithHoldPassword,
			    name : 'holdPwd',
			    labelWidth : 60,
			    anchor : '99%'
		    });
		  this.txtMemo = Ext.create('Ext.form.field.Text', {
			    fieldLabel : T.label.memo,
			    name : 'memo',
			    labelWidth : 60,
			    anchor : '99%',
			    maxLength : 100
		    });
		  this.btnSearch = Ext.create('Ext.button.Button', {
			    text : T.label.search,
			    itemId : 'btnSearch',
			    iconCls : 'icon-search',
			    scope : this,
			    handler : this.onBtnSearchClicked
		    });
		  this.btnRelease = Ext.create('Ext.button.Button', {
			    text : T.label.release,
			    iconCls : 'icon-unlock',
			    itemId : 'btnRelease',
			    scope : this,
			    handler : this.onBtnReleaseClicked
		    });
		  this.frmRelease = Ext.create('Ext.form.Panel', {
			    flex : 1,
			    title : T.label.releaseMaterialLot,
			    items : [this.txtReleaseNo, this.txtHoldPwd, this.txtMemo],
			    bbar : {
				    xtype : 'toolbar',
				    items : [this.btnSearch, this.btnRelease]
			    }
		    });

		  this.items = [this.gridRelease, {
			    width : 250,
			    layout : {
				    type : 'vbox',
				    align : 'stretch'
			    },
			    items : [this.frmSearch, this.frmRelease]
		    }];

		  this.callParent();
	  },
	  onBtnSearchClicked : function() {
		  var proxy = this.gridRelease.getStore().getProxy();
		  proxy.extraParams = this.frmSearch.getValues();
		  this.gridRelease.getStore().loadPage(1);
	  },
	  onBtnReleaseClicked : function(btn) {
		  var rcds = this.gridRelease.getSelectionModel().getSelection();
		  if (Ext.isEmpty(rcds)) {
			  Ext.Msg.show({
				    title : T.label.warn,
				    msg : T.label.select_one_record,
				    icon : Ext.Msg.WARNING,
				    buttons : Ext.Msg.OK
			    });

			  return;
		  }

		  var pms = {
			  releasePwd : this.txtHoldPwd.getValue(),
			  releaseMemo : this.txtMemo.getValue(),
			  msnList : []
		  };

		  Ext.each(rcds, function(rcd) {
			    pms.msnList.push({
				      msn : rcd.get('msn')
			      });
		    });

		  var me = this;
		  Ext.Msg.show({
			    title : T.label.save,
			    msg : T.msg.are_you_sure_to_save_data,
			    icon : Ext.Msg.QUESTION,
			    buttons : Ext.Msg.YESNO,
			    fn : function(btnId) {
				    if (btnId == 'yes') {
					    btn.disable();

					    YX.ZbusRpc.request({
						      module : 'SmatReleaseMaterialBatchSnService',
						      params : pms,
						      showSuccess : true,
						      callback : function() {
							      btn.enable();
						      },
						      success : function(rsp) {
							      //me.gridRelease.getStore().loadPage(1);
							      me.txtReleaseNo.setValue(rsp.releaseNo);
						      }
					      });
				    }
			    }
		    });
	  }
  });